#ifndef DESIGN_ADAPTER_H_
#define DESIGN_ADAPTER_H_

namespace adapter{

class Duck
{
public:
    virtual void Quack() = 0;
    virtual void Fly() = 0;
};

class Turkey
{
public:
    virtual void Gobble() = 0;
    virtual void Fly() = 0;
};
///////////////////////////

class MallardDuck : public Duck
{
public:
    virtual void Quack();
    virtual void Fly();
};

class WildTurkey : public Turkey
{
public:
    virtual void Gobble();
    virtual void Fly();
};

class TurkeyAdapter : public Duck
{
public:
    TurkeyAdapter(Turkey* t);
public:
    virtual void Quack();
    virtual void Fly();
private:
    Turkey* m_turkey;
};
}
#endif // DESIGN_ADAPTER_H_
